﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace KioskosJugandoLimpio.Classes
{
    public class Opcion
    {
        public Pregunta pregunta;
        private string opcion;
        public int idOpciones;
        public string valor;
        public bool Marcado;

        public Opcion(int idOpciones, string opcion, string valor, Pregunta pregunta, bool Marcado)
        {
            // TODO: Complete member initialization
            this.idOpciones = idOpciones;
            this.opcion = opcion;
            this.pregunta = pregunta;
            this.valor = valor;
            this.Marcado = Marcado;
        }

        public Opcion(int idOpciones)
        {
            // TODO: Complete member initialization
            this.idOpciones = idOpciones;
        }

        public Control control
        {
            get
            {
                Control ctl = null;
                switch (this.pregunta.ControlDefault)
                {
                    case "checkbox": ctl = new CheckBox();
                        ((CheckBox)ctl).Text = this.opcion;
                        ((CheckBox)ctl).Attributes["value"] = this.idOpciones.ToString();
                        ((CheckBox)ctl).Attributes["name"] = this.pregunta.idPreguntas.ToString();
                        ctl.ID = this.pregunta.idPreguntas.ToString();
                        ctl.ClientIDMode = ClientIDMode.Static;

                        break;
                    case "text": ctl = new TextBox(); break;
                    case "radio": ctl = new RadioButton();
                        ((RadioButton)ctl).Text = this.opcion;
                        ((RadioButton)ctl).Attributes["value"] = this.idOpciones.ToString();
                        ctl.ID = this.pregunta.idPreguntas.ToString();
                        ctl.ClientIDMode = ClientIDMode.Static;
                        break;
                }
                return ctl;
            }
        }

        public ListItem listItem
        {
            get
            {
                return new ListItem(this.opcion, this.idOpciones.ToString());
            }
        }

        public Control input
        {
            get
            {
                string opid;
                if (this.idOpciones >= 1)
                {
                    opid = idOpciones.ToString();
                }
                else
                {
                    opid = Guid.NewGuid().ToString();
                }

                DIVformat divMain = new DIVformat("__opcion_head_" + opid);
                divMain.addLabel("Muestra Pregunta ", "");
                divMain.addRadio("", "__pregunta_head_" + pregunta.idPreguntas, "", Marcado);
                divMain.addLabel("Opcion:", "");
                divMain.addTextBox(this.opcion, "OP", "txtOpcion" + opid, "opcion", "width: 30%;");
                divMain.addLabel(" Valor:", "");
                divMain.addTextBox(this.valor, "OV","txtValor" + opid, "opcion", "width:15%;");
                divMain.addLink("Eliminar Opciones...", string.Format("fnDelOpcion('{0}')", opid));
                divMain.addNewLine();
                return divMain.getDIV();
            }
        }

        public Control more
        {
            get
            {
                Control ctl = new Control();

                Label lblOpciones = new Label();
                lblOpciones.CssClass = "pregunta";
                lblOpciones.Text = "Opciones";
                ctl.Controls.Add(lblOpciones);

                //__pregunta_
                LinkButton addBtn = new LinkButton();
                addBtn.OnClientClick = (string.Format("return fnAddOption('{0}');", this.pregunta.idPreguntas));
                addBtn.Text = "[+]";
                ctl.Controls.Add(addBtn);
                return ctl;

            }
        }

        internal void guardar(System.Data.SqlClient.SqlTransaction tran)
        {
            if (this.idOpciones == -1)
            {
                this.idOpciones = SQL.fnExec(string.Format("EXEC guardarOpcion {0}, '{1}' , '{2}', {3}", this.idOpciones, this.opcion, this.opcion, this.valor == "" ? "null" : this.valor), tran);
            }
            else
            {
                SQL.fnExec(string.Format("EXEC guardarOpcion {0}, '{1}' , '{2}', {3}", this.idOpciones, this.opcion, this.opcion, this.valor == "" ? "null" : this.valor), tran);
            }
            SQL.fnExec(string.Format("EXEC guardarOpcionesPreguntas {0}, {1}, {2}", this.idOpciones, this.pregunta.idPreguntas, this.Marcado), tran);
        }
    }
}
